const { app, BrowserWindow, Menu } = require('electron');
const path = require('path');
const { t, setLocale, getLocale } = require('./i18n');

function createWindow() {
  const win = new BrowserWindow({
    width: 1024,
    height: 768,
    minWidth: 800,           // 最小宽度
    minHeight: 600,          // 最小高度
    resizable: true,         // ✅ 允许调整窗口大小
    minimizable: true,       // ✅ 允许最小化
    maximizable: true,       // ✅ 允许最大化
    closable: true,          // ✅ 允许关闭
    title: t('window.title'),  // 窗口标题（多语言）
    icon: path.join(__dirname, 'icon.png'),  // 窗口图标
    show: false,             // 先不显示，等加载完成后再显示
    backgroundColor: '#ffffff',  // 背景色
    webPreferences: {
      nodeIntegration: false,       // 🔒 禁用 Node 集成（安全最佳实践）
      contextIsolation: true,       // 🔒 启用上下文隔离
      preload: path.join(__dirname, 'preload.js'),  // 使用 preload 脚本
      devTools: true,               // 启用开发者工具
    },
  });

  // 加载应用
  win.loadFile('dist/index.html');

  // 窗口准备好后显示（避免闪烁）
  win.once('ready-to-show', () => {
    win.show();
  });

  // 监听窗口调整大小事件
  win.on('resize', () => {
    const [width, height] = win.getSize();
    console.log(`窗口大小已调整: ${width}x${height}`);
  });

  // 监听窗口最大化事件
  win.on('maximize', () => {
    console.log('窗口已最大化');
  });

  // 监听窗口取消最大化事件
  win.on('unmaximize', () => {
    console.log('窗口已还原');
  });

  // 监听窗口最小化事件
  win.on('minimize', () => {
    console.log('窗口已最小化');
  });

  // 监听页面加载状态
  win.webContents.on('did-fail-load', (event, errorCode, errorDescription) => {
    console.error('页面加载失败:', errorCode, errorDescription);
  });

  win.webContents.on('did-finish-load', () => {
    console.log('页面加载成功');
  });

  // 开发环境自动打开 DevTools（可选）
  if (process.env.NODE_ENV === 'development') {
    win.webContents.openDevTools();
  }

  return win;
}

function createMenu() {
  const template = [
    {
      label: t('menu.app'),
      submenu: [
        {
          label: t('menu.about'),
          click: () => {
            const aboutWindow = new BrowserWindow({
              width: 400,
              height: 300,
              resizable: false,
              minimizable: false,
              maximizable: false,
              title: t('about.title'),
            });
            aboutWindow.loadURL(`data:text/html,
              <html>
                <head>
                  <meta charset="UTF-8">
                  <style>
                    body { 
                      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif;
                      text-align: center; 
                      padding: 50px;
                      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
                      color: white;
                    }
                    h1 { margin-bottom: 10px; }
                    p { margin: 5px 0; }
                  </style>
                </head>
                <body>
                  <h1>🔐 Hawkpass</h1>
                  <p>${t('about.description')}</p>
                  <p>${t('about.version')} ${app.getVersion()}</p>
                  <p style="margin-top: 30px; font-size: 12px;">${t('about.based')}</p>
                </body>
              </html>
            `);
          },
        },
        { type: 'separator' },
        { role: 'quit', label: t('menu.quit') },
      ],
    },
    {
      label: t('menu.edit'),
      submenu: [
        { role: 'undo', label: t('menu.undo') },
        { role: 'redo', label: t('menu.redo') },
        { type: 'separator' },
        { role: 'cut', label: t('menu.cut') },
        { role: 'copy', label: t('menu.copy') },
        { role: 'paste', label: t('menu.paste') },
        { role: 'selectAll', label: t('menu.selectAll') },
      ],
    },
    {
      label: t('menu.view'),
      submenu: [
        { role: 'reload', label: t('menu.reload') },
        { role: 'forceReload', label: t('menu.forceReload') },
        { role: 'toggleDevTools', label: t('menu.toggleDevTools') },
        { type: 'separator' },
        { role: 'resetZoom', label: t('menu.resetZoom') },
        { role: 'zoomIn', label: t('menu.zoomIn') },
        { role: 'zoomOut', label: t('menu.zoomOut') },
        { type: 'separator' },
        { role: 'togglefullscreen', label: t('menu.toggleFullscreen') },
      ],
    },
    {
      label: t('menu.window'),
      submenu: [
        { role: 'minimize', label: t('menu.minimize') },
        { role: 'zoom', label: t('menu.zoom') },
        { 
          label: t('menu.maximize'),
          click: (menuItem, browserWindow) => {
            if (browserWindow) {
              if (browserWindow.isMaximized()) {
                browserWindow.unmaximize();
              } else {
                browserWindow.maximize();
              }
            }
          },
        },
        { type: 'separator' },
        { role: 'close', label: t('menu.close') },
      ],
    },
    {
      label: t('menu.language'),
      submenu: [
        {
          label: t('menu.chineseSimplified'),
          type: 'radio',
          checked: getLocale() === 'zh-CN',
          click: () => {
            setLocale('zh-CN');
            // 重新创建菜单
            createMenu();
            // 更新所有窗口的标题
            BrowserWindow.getAllWindows().forEach(win => {
              win.setTitle(t('window.title'));
            });
          },
        },
        {
          label: t('menu.english'),
          type: 'radio',
          checked: getLocale() === 'en-US',
          click: () => {
            setLocale('en-US');
            // 重新创建菜单
            createMenu();
            // 更新所有窗口的标题
            BrowserWindow.getAllWindows().forEach(win => {
              win.setTitle(t('window.title'));
            });
          },
        },
      ],
    },
    {
      label: t('menu.help'),
      submenu: [
        {
          label: t('menu.repository'),
          click: async () => {
            const { shell } = require('electron');
            await shell.openExternal('https://gitcode.com/nutpi/hawkpass');
          },
        },
        {
          label: t('menu.originalHawkpass'),
          click: async () => {
            const { shell } = require('electron');
            await shell.openExternal('https://github.com/kalpetros/hawkpass');
          },
        },
        { type: 'separator' },
        {
          label: t('menu.reportIssue'),
          click: async () => {
            const { shell } = require('electron');
            await shell.openExternal('https://gitcode.com/nutpi/hawkpass/issues');
          },
        },
        { type: 'separator' },
        {
          label: t('menu.dicewareGuide'),
          click: async () => {
            const { shell } = require('electron');
            await shell.openExternal('https://www.eff.org/dice');
          },
        },
      ],
    },
  ];
  const menu = Menu.buildFromTemplate(template);
  Menu.setApplicationMenu(menu);
}

// 初始化语言（默认中文）
function initLanguage() {
  // 获取系统语言
  const systemLocale = app.getLocale(); // 例如: zh-CN, en-US
  
  // 如果系统是中文，使用中文；否则也默认使用中文
  // 如果需要根据系统语言自动切换，可以修改这里
  if (systemLocale.startsWith('zh')) {
    setLocale('zh-CN');
  } else {
    // 默认使用中文
    setLocale('zh-CN');
  }
  
  console.log(`系统语言: ${systemLocale}, 应用语言: ${getLocale()}`);
}

app.whenReady().then(() => {
  // 初始化语言
  initLanguage();
  
  createWindow();
  createMenu();
});

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow();
  }
});
